package br.com.ecomanda.model;

import java.io.Serializable;

import javax.persistence.*;

import br.com.ecomanda.controller.FuncionarioController;
import br.com.ecomanda.enumerations.PermissoesEnum;

import java.util.List;


/**
 * The persistent class for the funcionario database table.
 * 
 */
@Entity
@NamedQuery(name="Funcionario.findAll", query="SELECT f FROM Funcionario f")
public class Funcionario implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id_funcionario")
	private int idFuncionario;

	@Column(name="ds_nome")
	private String dsNome;

	@Column(name="ds_nome_usuario")
	private String dsNomeUsuario;

	@Column(name="ds_senha")
	private String dsSenha;

	@Column(name="nu_documento")
	private String nuDocumento;

	//bi-directional many-to-one association to FuncionarioPerfil
	@OneToMany(mappedBy="funcionario")
	private List<FuncionarioPerfil> funcionarioPerfils;

	public Funcionario() {
	}

	public int getIdFuncionario() {
		return this.idFuncionario;
	}

	public void setIdFuncionario(int idFuncionario) {
		this.idFuncionario = idFuncionario;
	}

	public String getDsNome() {
		return this.dsNome;
	}

	public void setDsNome(String dsNome) {
		this.dsNome = dsNome;
	}

	public String getDsNomeUsuario() {
		return this.dsNomeUsuario;
	}

	public void setDsNomeUsuario(String dsNomeUsuario) {
		this.dsNomeUsuario = dsNomeUsuario;
	}

	public String getDsSenha() {
		return this.dsSenha;
	}

	public void setDsSenha(String dsSenha) {
		this.dsSenha = dsSenha;
	}

	public String getNuDocumento() {
		return this.nuDocumento;
	}

	public void setNuDocumento(String nuDocumento) {
		this.nuDocumento = nuDocumento;
	}

	public List<FuncionarioPerfil> getFuncionarioPerfils() {
		return this.funcionarioPerfils;
	}

	public void setFuncionarioPerfils(List<FuncionarioPerfil> funcionarioPerfils) {
		this.funcionarioPerfils = funcionarioPerfils;
	}

	public FuncionarioPerfil addFuncionarioPerfil(FuncionarioPerfil funcionarioPerfil) {
		getFuncionarioPerfils().add(funcionarioPerfil);
		funcionarioPerfil.setFuncionario(this);

		return funcionarioPerfil;
	}

	public FuncionarioPerfil removeFuncionarioPerfil(FuncionarioPerfil funcionarioPerfil) {
		getFuncionarioPerfils().remove(funcionarioPerfil);
		funcionarioPerfil.setFuncionario(null);

		return funcionarioPerfil;
	}
	
	public boolean isAtualizaQualquerStatus(){
		return FuncionarioController.permissao(this, PermissoesEnum.ATUALIZAR_QUALQUER_STATUS);
	}

}